package vo

import (
	"boy-go/pkg/request"
	"boy-go/pkg/xtime"
	"time"
)

type GenTableModel struct {
	TableId        int64                  `json:"tableId" form:"tableId"`               // 编号
	MTableName     *string                `json:"mTableName" form:"mTableName"`         // 表名称
	MTableComment  *string                `json:"mTableComment" form:"mTableComment"`   // 表描述
	SubTableName   *string                `json:"subTableName" form:"subTableName"`     // 关联子表的表名
	SubTableFkName *string                `json:"subTableFkName" form:"subTableFkName"` // 子表关联的外键名
	ClassName      *string                `json:"className" form:"className"`           // 实体类名称
	TplCategory    *string                `json:"tplCategory" form:"tplCategory"`       // 使用的模板（crud单表操作 tree树表操作）
	TplWebType     *string                `json:"tplWebType" form:"tplWebType"`         // 前端模板类型（element-ui模版 element-plus模版）
	PackageName    *string                `json:"packageName" form:"packageName"`       // 生成包路径
	ModuleName     *string                `json:"moduleName" form:"moduleName"`         // 生成模块名
	BusinessName   *string                `json:"businessName" form:"businessName"`     // 生成业务名
	FunctionName   *string                `json:"functionName" form:"functionName"`     // 生成功能名
	FunctionAuthor *string                `json:"functionAuthor" form:"functionAuthor"` // 生成功能作者
	GenType        *string                `json:"genType" form:"genType"`               // 生成代码方式（0zip压缩包 1自定义路径）
	GenPath        *string                `json:"genPath" form:"genPath"`               // 生成路径（不填默认项目路径）
	Options        *string                `json:"options" form:"options"`               // 其它生成选项
	CreateBy       *string                `json:"createBy" form:"createBy"`             // 创建者
	CreateTime     *string                `json:"createTime" form:"createTime"`         // 创建时间
	UpdateBy       *string                `json:"updateBy" form:"updateBy"`             // 更新者
	UpdateTime     *string                `json:"updateTime" form:"updateTime"`         // 更新时间
	Remark         *string                `json:"remark" form:"remark"`                 // 备注
	ParentMenuId   int64                  `json:"parentMenuId" form:"parentMenuId"`     // 父级菜单ID
	Columns        []*GenTableColumnModel `json:"columns" form:"columns"`               // 列信息
}

func (item *GenTableModel) CreateAt(t *time.Time) {
	item.CreateTime = xtime.TS.Format(t)
}
func (item *GenTableModel) UpdateAt(t *time.Time) {
	item.UpdateTime = xtime.TS.Format(t)
}

type QueryGenTableReq struct {
	request.ParamsRequest         // 分页参数
	TableId               int64   `json:"tableId" form:"tableId"`               // 编号
	MTableName            *string `json:"mTableName" form:"mTableName"`         // 表名称
	MTableComment         *string `json:"mTableComment" form:"mTableComment"`   // 表描述
	SubTableName          *string `json:"subTableName" form:"subTableName"`     // 关联子表的表名
	SubTableFkName        *string `json:"subTableFkName" form:"subTableFkName"` // 子表关联的外键名
	ClassName             *string `json:"className" form:"className"`           // 实体类名称
	TplCategory           *string `json:"tplCategory" form:"tplCategory"`       // 使用的模板（crud单表操作 tree树表操作）
	TplWebType            *string `json:"tplWebType" form:"tplWebType"`         // 前端模板类型（element-ui模版 element-plus模版）
	PackageName           *string `json:"packageName" form:"packageName"`       // 生成包路径
	ModuleName            *string `json:"moduleName" form:"moduleName"`         // 生成模块名
	BusinessName          *string `json:"businessName" form:"businessName"`     // 生成业务名
	FunctionName          *string `json:"functionName" form:"functionName"`     // 生成功能名
	FunctionAuthor        *string `json:"functionAuthor" form:"functionAuthor"` // 生成功能作者
	GenType               *string `json:"genType" form:"genType"`               // 生成代码方式（0zip压缩包 1自定义路径）
	GenPath               *string `json:"genPath" form:"genPath"`               // 生成路径（不填默认项目路径）
	Options               *string `json:"options" form:"options"`               // 其它生成选项
	CreateBy              *string `json:"createBy" form:"createBy"`             // 创建者
	CreateTime            *string `json:"createTime" form:"createTime"`         // 创建时间
	UpdateBy              *string `json:"updateBy" form:"updateBy"`             // 更新者
	UpdateTime            *string `json:"updateTime" form:"updateTime"`         // 更新时间
	Remark                *string `json:"remark" form:"remark"`                 // 备注
}
type ListGenTableRsp struct {
	List  []*GenTableModel
	Total int64
}

type AddGenTableReq struct {
	TableId        int64   `json:"tableId" form:"tableId"`               // 编号
	MTableName     *string `json:"mTableName" form:"mTableName"`         // 表名称
	MTableComment  *string `json:"mTableComment" form:"mTableComment"`   // 表描述
	SubTableName   *string `json:"subTableName" form:"subTableName"`     // 关联子表的表名
	SubTableFkName *string `json:"subTableFkName" form:"subTableFkName"` // 子表关联的外键名
	ClassName      *string `json:"className" form:"className"`           // 实体类名称
	TplCategory    *string `json:"tplCategory" form:"tplCategory"`       // 使用的模板（crud单表操作 tree树表操作）
	TplWebType     *string `json:"tplWebType" form:"tplWebType"`         // 前端模板类型（element-ui模版 element-plus模版）
	PackageName    *string `json:"packageName" form:"packageName"`       // 生成包路径
	ModuleName     *string `json:"moduleName" form:"moduleName"`         // 生成模块名
	BusinessName   *string `json:"businessName" form:"businessName"`     // 生成业务名
	FunctionName   *string `json:"functionName" form:"functionName"`     // 生成功能名
	FunctionAuthor *string `json:"functionAuthor" form:"functionAuthor"` // 生成功能作者
	GenType        *string `json:"genType" form:"genType"`               // 生成代码方式（0zip压缩包 1自定义路径）
	GenPath        *string `json:"genPath" form:"genPath"`               // 生成路径（不填默认项目路径）
	Options        *string `json:"options" form:"options"`               // 其它生成选项
	CreateBy       *string `json:"createBy" form:"createBy"`             // 创建者
	CreateTime     *string `json:"createTime" form:"createTime"`         // 创建时间
	UpdateBy       *string `json:"updateBy" form:"updateBy"`             // 更新者
	UpdateTime     *string `json:"updateTime" form:"updateTime"`         // 更新时间
	Remark         *string `json:"remark" form:"remark"`                 // 备注
}
type AddGenTableRsp struct {
	TableId int64 `json:"tableId" form:"tableId"` // 编号
}

type EditGenTableReq struct {
	request.ParamsRequest
	TableId        int64                  `json:"tableId" form:"tableId"`               // 编号
	MTableName     *string                `json:"mTableName" form:"mTableName"`         // 表名称
	MTableComment  *string                `json:"mTableComment" form:"mTableComment"`   // 表描述
	SubTableName   *string                `json:"subTableName" form:"subTableName"`     // 关联子表的表名
	SubTableFkName *string                `json:"subTableFkName" form:"subTableFkName"` // 子表关联的外键名
	ClassName      *string                `json:"className" form:"className"`           // 实体类名称
	TplCategory    string                 `json:"tplCategory" form:"tplCategory"`       // 使用的模板（crud单表操作 tree树表操作）
	TplWebType     *string                `json:"tplWebType" form:"tplWebType"`         // 前端模板类型（element-ui模版 element-plus模版）
	PackageName    *string                `json:"packageName" form:"packageName"`       // 生成包路径
	ModuleName     *string                `json:"moduleName" form:"moduleName"`         // 生成模块名
	BusinessName   *string                `json:"businessName" form:"businessName"`     // 生成业务名
	FunctionName   *string                `json:"functionName" form:"functionName"`     // 生成功能名
	FunctionAuthor *string                `json:"functionAuthor" form:"functionAuthor"` // 生成功能作者
	GenType        *string                `json:"genType" form:"genType"`               // 生成代码方式（0zip压缩包 1自定义路径）
	GenPath        *string                `json:"genPath" form:"genPath"`               // 生成路径（不填默认项目路径）
	Options        *string                `json:"options" form:"options"`               // 其它生成选项
	CreateBy       *string                `json:"createBy" form:"createBy"`             // 创建者
	CreateTime     *string                `json:"createTime" form:"createTime"`         // 创建时间
	UpdateBy       *string                `json:"updateBy" form:"updateBy"`             // 更新者
	UpdateTime     *string                `json:"updateTime" form:"updateTime"`         // 更新时间
	Remark         *string                `json:"remark" form:"remark"`                 // 备注
	Columns        []*GenTableColumnModel `json:"columns" form:"columns"`               // 表列信息
}
type EditGenTableRsp struct {
	TableId int64 `json:"tableId" form:"tableId"` // 编号
}
